package com.rpa.secure.servicerpasecure.common.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.Map;

/**
 * 设置登录的jwt的token令牌及解密
 *
 */
public class JwtUtil {
    /**
     * 使用Hs256算法，使用固定私钥
     * 设置jwt的token令牌
     */
    public static String createJwt(String secretKey, Long expirationTime, Map<String,Object> claims){
        //设置签名算法
        SignatureAlgorithm signatureAlgorithm=SignatureAlgorithm.HS256;
        //设置过期时间
        Long time=System.currentTimeMillis()+expirationTime;
        Date expTime=new Date(time);
        //设置jwt的body
        JwtBuilder jwtBuilder= Jwts.builder()
                .setClaims(claims)
                .signWith(signatureAlgorithm,secretKey.getBytes(StandardCharsets.UTF_8))
                .setExpiration(expTime);
        return jwtBuilder.compact();

    }
    /**
     * 解密
     */
    public static Claims parseJWT(String secretKey,String token){
        Claims claims=Jwts.parser()
                .setSigningKey(secretKey.getBytes(StandardCharsets.UTF_8))
                .parseClaimsJws(token).getBody();
        return claims;
    }
}
